package com.gxa.xiaoucomeshome.mapper;

import com.gxa.xiaoucomeshome.pojo.Agree;
import com.gxa.xiaoucomeshome.pojo.Order;
import com.gxa.xiaoucomeshome.pojo.User;
import io.swagger.models.auth.In;
import org.apache.ibatis.annotations.Param;

import java.time.LocalDateTime;
import java.util.Date;
import java.util.List;
import java.util.Map;

public interface UserMapper {
    User selectByPhone(String phone);

    void insert(@Param("name") String name,@Param("phone") String phone,@Param("pwd") String pwd);

    /**
     * 订单添加——下单操作
     * @param
     * @return
     */
    void insertOrder(@Param("order_id") String order_id, @Param("site_id")Integer site_id,
                     @Param("address_id")Integer address_id, @Param("u_id")Integer uid,
                    @Param("img1") String img1,@Param("img2") String img2);



    /**
     * 在order_time中添加时间和订单号
     * @param commitDate
     */
    void insertOrderIdAndTime(@Param("order_id") String order_id,@Param("commitDate") Date commitDate);

    /**
     * 在order_signIn_detail表中插入order_id
     */
    void insertOrderIdInDetail(@Param("order_id") String order_id);

    /**
     * 统计待配送订单数量
     * @return 数量
     */
    Integer selectStateByWait(Integer uid);
    /**
     * 统计配送中订单数量
     * @return 数量
     */
    Integer selectStateByRunning(Integer uid);
    /**
     * 统计配送失败订单数量
     * @return 数量
     */
    Integer selectStateByFalse(Integer uid);
    /**
     * 统计配送成功订单数量
     * @return 数量
     */
    Integer selectStateBySuccess(Integer uid);

    /**
     * 待配送订单列表
     * @return 订单详情列表
     */
    List<Map<String,Object>> selectOrderListByWait(Integer uid);
    /**
     * 配送中订单列表
     * @return 订单详情列表
     */
    List<Map<String,Object>> selectOrderListByRunning(Integer uid);
    /**
     * 配送成功订单列表
     * @return 订单详情列表
     */
    List<Map<String,Object>> selectOrderListBySuccess(Integer uid);
    /**
     * 配送失败订单列表
     * @return 订单详情列表
     */
    List<Map<String,Object>> selectOrderListByFalse(Integer uid);
    /**
     * 根据订单编号查询订单详情
     */
    Map<String,Object> selectByOrder_Id(String id);


    /**
     * (我的申请)查询所有的订单信息
     * @param uid
     * @return
     */
    List<Map<String,Object>> selectAllByUid(@Param("uid")Integer uid, @Param("startTime") String startTime,
                                            @Param("endTime") String endTime,@Param("code") Integer code);

    /**
     * （我的申请中）单个订单记录
     * @param order_id
     * @return
     */
    List<Map<String,Object>> selectOrderById(@Param("order_id") String order_id);
    /**
     * 用户注册界面，用户协议
     */
    List<Agree> selectAgree();

    /**
     * 判断用户当前是否有订单在待审核状态
     * @param uid 用户编号
     * @return 待审核订单
     */
    Order selectByOrder_state(Integer uid);
}
